home *** CD-ROM | disk | FTP | other *** search
/ Business Shareware / Business Shareware.iso / start / gfxapps / pbmpl91d / pbmplus / man / ppmforge.man < prev    next >
Text File  |  1993-01-08  |  21KB  |  423 lines

  1.  
  2.  
  3. ppmforge(1)                Unix Programmer's Manual                ppmforge(1)
  4.  
  5.  
  6. NAME
  7.      ppmforge - fractal forgeries of clouds, planets, and starry skies
  8.  
  9. SYNOPSIS
  10.               ppmforge [-clouds] [-night] [-dimension dimen] [-hour hour] [-
  11.                                                       -----         ----
  12.               inclination|-tilt angle] [-mesh size] [-power factor] [-glaciers
  13.                                 -----         ----          ------
  14.               level] [-ice level] [-saturation sat] [-seed seed] [-stars
  15.               -----        -----               ---         ----
  16.               fraction] [-xsize|-width width] [-ysize|-height height]
  17.               --------                 -----                  ------
  18.  
  19. DESCRIPTION
  20.      ppmforge generates three kinds of ``random fractal forgeries,'' the  term
  21.      coined by Richard F. Voss of the IBM Thomas J. Watson Research Center for
  22.      seemingly realistic pictures  of  natural  objects  generated  by  simple
  23.      algorithms   embodying   randomness  and  fractal  self-similarity.   The
  24.      techniques used by ppmforge  are  essentially  those  given  by  Voss[1],
  25.      particularly the technique of spectral synthesis explained in more detail
  26.      by Dietmar Saupe[2].
  27.  
  28.      The program generates two varieties  of  pictures:  planets  and  clouds,
  29.      which  are  just  different  renderings of data generated in an identical
  30.      manner, illustrating the unity of the fractal  structure  of  these  very
  31.      different objects.  A third type of picture, a starry sky, is synthesised
  32.      directly from pseudorandom numbers.
  33.  
  34.      The generation of planets or clouds begins with  the  preparation  of  an
  35.      array  of  random  data in the frequency domain.  The size of this array,
  36.      the ``mesh size,'' can be set with the -mesh option; the larger the  mesh
  37.      the  more  realistic  the  pictures  but  the calculation time and memory
  38.      requirement increases as the  square  of  the  mesh  size.   The  fractal
  39.      dimension,  which  you can specify with the -dimension option, determines
  40.      the roughness of the terrain on the planet or the scale of detail in  the
  41.      clouds.   As  the  fractal  dimension  is  increased, more high frequency
  42.      components are added into the random mesh.
  43.  
  44.      Once the mesh is generated, an inverse two dimensional Fourier  transform
  45.      is performed upon it.  This converts the original random frequency domain
  46.      data into spatial amplitudes.  We scale the real components  that  result
  47.      from  the Fourier transform into numbers from 0 to 1 associated with each
  48.      point on the mesh.  You can further modify  this  number  by  applying  a
  49.      ``power  law  scale''  to it with the -power option.   Unity scale leaves
  50.      the numbers unmodified; a power scale of 0.5 takes the square root of the
  51.      numbers in the mesh, while a power scale of 3 replaces the numbers in the
  52.      mesh with their cubes.  Power law scaling is best envisioned by  thinking
  53.      of  the data as representing the elevation of terrain; powers less than 1
  54.      yield landscapes with vertical scarps  that  look  like  glacially-carved
  55.      valleys;  powers greater than one make fairy-castle spires (which require
  56.      large mesh sizes and high resolution for best results).
  57.  
  58.      After  these  calculations,  we  have  a  array  of  the  specified  size
  59.      containing  numbers that range from 0 to 1.  The pixmaps are generated as
  60.      follows:
  61.  
  62.      Clouds    A colour map is created that ranges from pure blue to white  by
  63.                increasing   admixture   (desaturation)  of  blue  with  white.
  64.                Numbers less than 0.5 are coloured blue,  numbers  between  0.5
  65.                and  1.0  are coloured with corresponding levels of white, with
  66.  
  67.  
  68.                                25 October 1991                               1
  69.  
  70.  
  71.  
  72. ppmforge(1)                Unix Programmer's Manual                ppmforge(1)
  73.  
  74.  
  75.                1.0 being pure white.
  76.  
  77.      Planet    The mesh is projected onto a sphere.  Values less than 0.5  are
  78.                treated  as  water and values between 0.5 and 1.0 as land.  The
  79.                water areas are coloured based upon the water depth,  and  land
  80.                based  on  its  elevation.   The  random depth data are used to
  81.                create clouds over the  oceans.   An  atmosphere  approximately
  82.                like   the  Earth's  is  simulated;  its  light  absorption  is
  83.                calculated to create a blue cast around the limb of the planet.
  84.                A  function  that  rises  from  0  to  1  based  on latitude is
  85.                modulated by the local elevation to generate  polar  ice  caps-
  86.                -high  altitude terrain carries glaciers farther from the pole.
  87.                Based on the position of the star with respect to the observer,
  88.                the  apparent  colour of each pixel of the planet is calculated
  89.                by ray-tracing from the star to the planet to the observer  and
  90.                applying  a  lighting model that sums ambient light and diffuse
  91.                reflection (for most planets ambient light is  zero,  as  their
  92.                primary  star  is the only source of illumination).  Additional
  93.                random data are used to generate stars around the planet.
  94.  
  95.      Night     A sequence of pseudorandom numbers is used  to  generate  stars
  96.                with a user specified density.
  97.  
  98.      Cloud pictures always contain 256 or fewer colours and may  be  displayed
  99.      on  most  colour  mapped  devices  without  further  processing.   Planet
  100.      pictures often contain  tens  of  thousands  of  colours  which  must  be
  101.      compressed  with ppmquant or ppmdither before encoding in a colour mapped
  102.      format.  If the display resolution is high  enough,  ppmdither  generally
  103.      produces  better  looking  planets.   ppmquant  tends  to create discrete
  104.      colour bands, particularly in  the  oceans,  which  are  unrealistic  and
  105.      distracting.  The number of colours in starry sky pictures generated with
  106.      the -night option depends on the value specified for -saturation.   Small
  107.      values  limit the colour temperature distribution of the stars and reduce
  108.      the number of colours in the image.  If the -saturation is set to 0, none
  109.      of  the stars will be coloured and the resulting image will never contain
  110.      more than 256 colours.  Night  sky  pictures  with  many  different  star
  111.      colours  often  look  best when colour compressed by pnmdepth rather than
  112.      ppmquant or ppmdither.  Try newmaxval settings of  63,  31,  or  15  with
  113.                                  ---------
  114.      pnmdepth to reduce the number of colours in the picture to 256 or fewer.
  115.  
  116. OPTIONS
  117.  
  118.      -clouds   Generate clouds.  A pixmap  of  fractal  clouds  is  generated.
  119.                Selecting clouds sets the default for fractal dimension to 2.15
  120.                and power scale factor to 0.75.
  121.  
  122.      -dimension dimen
  123.                 -----
  124.                Sets the fractal dimension to the specified dimen, which may be
  125.                                                            -----
  126.                any  floating  point  value  between  0  and 3.  Higher fractal
  127.                dimensions create more ``chaotic'' images, which require higher
  128.                resolution  output and a larger FFT mesh size to look good.  If
  129.                no dimension is specified, 2.4 is used when generating  planets
  130.                and 2.15 for clouds.
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                25 October 1991                               2
  137.  
  138.  
  139.  
  140. ppmforge(1)                Unix Programmer's Manual                ppmforge(1)
  141.  
  142.  
  143.      -glaciers level
  144.                -----
  145.                The floating point level setting controls the extent  to  which
  146.                                   -----
  147.                terrain elevation causes ice to appear at lower latitudes.  The
  148.                default value of 0.75 makes the polar caps  extend  toward  the
  149.                equator  across  high terrain and forms glaciers in the highest
  150.                mountains, as on Earth.  Higher values  make  ice  sheets  that
  151.                cover  more and more of the land surface, simulating planets in
  152.                the midst of an ice age.   Lower  values  tend  to  be  boring,
  153.                resulting   in   unrealistic   geometrically-precise   ice  cap
  154.                boundaries.
  155.  
  156.      -hour hour
  157.            ----
  158.                When generating a planet, hour is used as the ``hour  angle  at
  159.                                          ----
  160.                the  central meridian.''  If you specify -hour 12, for example,
  161.                the planet will be fully  illuminated,  corresponding  to  high
  162.                noon  at  the  longitude  at the centre of the screen.  You can
  163.                specify any floating point value between 0 and 24 for hour, but
  164.                                                                      ----
  165.                values  which  place most of the planet in darkness (0 to 4 and
  166.                20 to 24) result in crescents which, while pretty,  don't  give
  167.                you  many illuminated pixels for the amount of computing that's
  168.                required.  If no -hour option is specified, a random hour angle
  169.                is chosen, biased so that only 25% of the images generated will
  170.                be crescents.
  171.  
  172.      -ice level
  173.           -----
  174.                Sets the extent of the polar ice caps  to  the  given  floating
  175.                point  level.   The  default  level  of  0.4  produces ice caps
  176.                       -----
  177.                similar to those of  the  Earth.   Smaller  values  reduce  the
  178.                amount of ice, while larger -ice settings create more prominent
  179.                ice caps.  Sufficiently large values, such as 100 or  more,  in
  180.                conjunction  with small settings for -glaciers (try 0.1) create
  181.                ``ice balls'' like Europa.
  182.  
  183.      -inclination|-tilt angle
  184.                         -----
  185.                The inclination angle of the planet with regard to its  primary
  186.                star  is  set  to  angle, which can be any floating point value
  187.                                   -----
  188.                from -90 to 90.  The inclination angle can  be  thought  of  as
  189.                specifying,  in degrees, the ``season'' the planet is presently
  190.                experiencing or, more precisely, the latitude at which the star
  191.                transits  the  zenith  at  local  noon.  If 0, the planet is at
  192.                equinox;  the  star  is  directly  overhead  at  the   equator.
  193.                Positive  values  represent  summer in the northern hemisphere,
  194.                negative values summer in the southern hemisphere.  The Earth's
  195.                inclination  angle,  for  example,  is  about  23.5 at the June
  196.                solstice, 0 at the equinoxes in March and September, and  -23.5
  197.                at   the   December  solstice.   If  no  inclination  angle  is
  198.                specified, a random value between -21.6  and  21.6  degrees  is
  199.                chosen.
  200.  
  201.      -mesh size
  202.            ----
  203.                A mesh of size by size  will  be  used  for  the  fast  Fourier
  204.                          ----    ----
  205.                transform (FFT).  Note that memory requirements and computation
  206.                speed increase as the square of size; if you  double  the  mesh
  207.                                                ----
  208.                size,  the  program will use four times the memory and run four
  209.                times as long.  The default mesh  is  256x256,  which  produces
  210.                reasonably  good  looking  pictures while using half a megabyte
  211.  
  212.  
  213.                                25 October 1991                               3
  214.  
  215.  
  216.  
  217. ppmforge(1)                Unix Programmer's Manual                ppmforge(1)
  218.  
  219.  
  220.                for the 256x256  array  of  single  precision  complex  numbers
  221.                required by the FFT.  On machines with limited memory capacity,
  222.                you may have to reduce the mesh size to avoid  running  out  of
  223.                RAM.    Increasing   the  mesh  size  produces  better  looking
  224.                pictures; the difference becomes particularly  noticeable  when
  225.                generating  high resolution images with relatively high fractal
  226.                dimensions (between 2.2 and 3).
  227.  
  228.      -night    A starry sky is generated.  The stars are created by  the  same
  229.                algorithm used for the stars that surround planet pictures, but
  230.                the output consists exclusively of stars.
  231.  
  232.      -power factor
  233.             ------
  234.                Sets the ``power factor'' used to scale elevations  synthesised
  235.                from  the FFT to factor, which can be any floating point number
  236.                                 ------
  237.                greater than zero.  If no factor is specified a default of  1.2
  238.                is  used  if a planet is being generated, or 0.75 if clouds are
  239.                selected by the -clouds option.  The result of  the  FFT  image
  240.                synthesis  is  an array of elevation values between 0 and 1.  A
  241.                non-unity power factor exponentiates each of  these  elevations
  242.                to  the  specified  power.   For  example,  a power factor of 2
  243.                squares each value, while a power factor of 0.5  replaces  each
  244.                with its square root.  (Note that exponentiating values between
  245.                0 and 1 yields values that remain within  that  range.)   Power
  246.                factors  less than 1 emphasise large-scale elevation changes at
  247.                the expense of small variations.  Power factors greater than  1
  248.                increase  the  roughness  of the terrain and, like high fractal
  249.                dimensions, may require a larger FFT mesh  size  and/or  higher
  250.                screen resolution to look good.
  251.  
  252.      -saturation sat
  253.                  ---
  254.                Controls the degree of colour  saturation  of  the  stars  that
  255.                surround planet pictures and fill starry skies created with the
  256.                -night option.  The default value of 125  creates  stars  which
  257.                resemble the sky as seen by the human eye from Earth's surface.
  258.                Stars are dim; only the brightest activate  the  cones  in  the
  259.                human retina, causing colour to be perceived.  Higher values of
  260.                sat approximate the appearance of stars from Earth orbit, where
  261.                ---
  262.                better   dark   adaptation,   absence   of   skyglow,  and  the
  263.                concentration of light from a given star onto a smaller area of
  264.                the  retina  thanks  to  the  lack  of  atmospheric  turbulence
  265.                enhances the perception of colour.   Values  greater  than  250
  266.                create  ``science  fiction''  skies  that,  while pretty, don't
  267.                occur in this universe.
  268.  
  269.      \         Thanks to the inverse square law combined with Nature's love of
  270.                mediocrity,  there  are  many,  many dim stars for every bright
  271.                one.  This population relationship is accurately  reflected  in
  272.                the  skies  created by ppmforge.  Dim, low mass stars live much
  273.                longer than bright massive stars, consequently there  are  many
  274.                reddish  stars  for  every  blue  giant.   This relationship is
  275.                preserved  by  ppmforge.   You  can  reverse  the   proportion,
  276.                simulating the sky as seen in a starburst galaxy, by specifying
  277.                a negative sat value.
  278.                           ---
  279.  
  280.  
  281.  
  282.  
  283.                                25 October 1991                               4
  284.  
  285.  
  286.  
  287. ppmforge(1)                Unix Programmer's Manual                ppmforge(1)
  288.  
  289.  
  290.      -seed num Sets the seed for the random number generator  to  the  integer
  291.            ---
  292.                num.   The  seed  used  to  create each picture is displayed on
  293.                ---
  294.                standard output (unless suppressed  with  the  -quiet  option).
  295.                Pictures generated with the same seed will be identical.  If no
  296.                -seed is specified, a random seed derived  from  the  date  and
  297.                time will be chosen.  Specifying an explicit seed allows you to
  298.                re-render  a  picture  you  particularly  like  at   a   higher
  299.                resolution or with different viewing parameters.
  300.  
  301.      -stars fraction
  302.             --------
  303.                Specifies the percentage of pixels, in  tenths  of  a  percent,
  304.                which  will  appear  as  stars,  either surrounding a planet or
  305.                filling the entire frame if -night is specified.   The  default
  306.                fraction is 100.
  307.                --------
  308.  
  309.      -xsize|-width width
  310.                    -----
  311.                Sets the width of the generated image  to  width  pixels.   The
  312.                                                           -----
  313.                default  width  is 256 pixels.  Images must be at least as wide
  314.                as they are high; if a width less than the height is specified,
  315.                it  will  be increased to equal the height.  If you must have a
  316.                long skinny pixmap, make a square one with ppmforge,  then  use
  317.                pnmcut to extract a portion of the shape and size you require.
  318.  
  319.      -ysize|-height height
  320.                     ------
  321.                Sets the height of the generated image to height  pixels.   The
  322.                                                          ------
  323.                default  height is 256 pixels.  If the height specified exceeds
  324.                the width, the width will be increased to equal the height.
  325.  
  326.      All flags can be abbreviated to their shortest unique prefix.
  327.  
  328. BUGS
  329.  
  330.      The algorithms require the output pixmap to be at least as wide as it  is
  331.      high,  and  the  width to be an even number of pixels.  These constraints
  332.      are enforced by increasing the size of the requested pixmap if necessary.
  333.  
  334.      You may have to reduce the FFT mesh size on machines with 16 bit integers
  335.      and segmented pointer architectures.
  336.  
  337. SEE ALSO
  338.      pnmcut(1), pnmdepth(1), ppmdither(1), ppmquant(1), ppm(5)
  339.  
  340.      [1]  Voss, Richard F., ``Random Fractal Forgeries,'' in Earnshaw et. al.,
  341.           Fundamental  Algorithms  for  Computer  Graphics, Berlin:  Springer-
  342.           Verlag, 1985.
  343.  
  344.      [2]  Peitgen, H.-O., and Saupe, D. eds., The Science Of  Fractal  Images,
  345.           New York: Springer Verlag, 1988.
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.                                25 October 1991                               5
  357.  
  358.  
  359.  
  360. ppmforge(1)                Unix Programmer's Manual                ppmforge(1)
  361.  
  362.  
  363. AUTHOR
  364.           John Walker
  365.           Autodesk SA
  366.           Avenue des Champs-Montants 14b
  367.           CH-2074 MARIN
  368.           Suisse/Schweiz/Svizzera/Svizra/Switzerland
  369.      Usenet:  kelvin@Autodesk.com
  370.      Fax:     038/33 88 15
  371.      Voice:   038/33 76 33
  372.  
  373.      Permission to use, copy, modify, and distribute  this  software  and  its
  374.      documentation  for any purpose and without fee is hereby granted, without
  375.      any conditions or restrictions.  This  software  is  provided  ``as  is''
  376.      without express or implied warranty.
  377.  
  378.      PLUGWARE! If you like this kind of stuff,  you  may  also  enjoy  ``James
  379.      Gleick's Chaos--The Software'' for MS-DOS, available for $59.95 from your
  380.      local software store or  directly  from  Autodesk,  Inc.,  Attn:  Science
  381.      Series,  2320 Marinship Way, Sausalito, CA 94965, USA.  Telephone:  (800)
  382.      688-2344 toll-free or, outside the U.S. (415) 332-2344  Ext  4886.   Fax:
  383.      (415)  289-4718.   ``Chaos--The  Software'' includes a more comprehensive
  384.      fractal forgery generator which creates three-dimensional  landscapes  as
  385.      well  as  clouds  and planets, plus five more modules which explore other
  386.      aspects of Chaos.  The user guide of more  than  200  pages  includes  an
  387.      introduction  by James Gleick and detailed explanations by Rudy Rucker of
  388.      the mathematics and algorithms used by each program.
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.                                25 October 1991                               6
  422.  
  423.